ALTER

您所在的位置:网站首页 sql 修改列 ALTER

ALTER

2023-04-06 17:46| 来源: 网络整理| 查看: 265

ALTER-TABLE-COLUMNALTER-TABLE-COLUMN​Name​

ALTER TABLE COLUMN

Description​

该语句用于对已有 table 进行 Schema change 操作。schema change 是异步的,任务提交成功则返回,之后可使用SHOW ALTER 命令查看进度。

语法:

ALTER TABLE [database.]table alter_clause;

schema change 的 alter_clause 支持如下几种修改方式:

向指定 index 的指定位置添加一列

语法:

ADD COLUMN column_name column_type [KEY | agg_type] [DEFAULT "default_value"][AFTER column_name|FIRST][TO rollup_index_name][PROPERTIES ("key"="value", ...)]

注意:

聚合模型如果增加 value 列,需要指定 agg_type非聚合模型(如 DUPLICATE KEY)如果增加key列,需要指定KEY关键字不能在 rollup index 中增加 base index 中已经存在的列(如有需要,可以重新创建一个 rollup index)向指定 index 添加多列

语法:

ADD COLUMN (column_name1 column_type [KEY | agg_type] DEFAULT "default_value", ...)[TO rollup_index_name][PROPERTIES ("key"="value", ...)]

注意:

聚合模型如果增加 value 列,需要指定agg_type聚合模型如果增加key列,需要指定KEY关键字不能在 rollup index 中增加 base index 中已经存在的列(如有需要,可以重新创建一个 rollup index)从指定 index 中删除一列

语法:

DROP COLUMN column_name[FROM rollup_index_name]

注意:

不能删除分区列如果是从 base index 中删除列,则如果 rollup index 中包含该列,也会被删除

修改指定 index 的列类型以及列位置

语法:

MODIFY COLUMN column_name column_type [KEY | agg_type] [NULL | NOT NULL] [DEFAULT "default_value"][AFTER column_name|FIRST][FROM rollup_index_name][PROPERTIES ("key"="value", ...)]

注意:

聚合模型如果修改 value 列,需要指定 agg_type非聚合类型如果修改key列,需要指定KEY关键字只能修改列的类型,列的其他属性维持原样(即其他属性需在语句中按照原属性显式的写出,参见 example 8)分区列和分桶列不能做任何修改目前支持以下类型的转换(精度损失由用户保证)TINYINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE 类型向范围更大的数字类型转换TINTINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE/DECIMAL 转换成 VARCHARVARCHAR 支持修改最大长度VARCHAR/CHAR 转换成 TINTINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLEVARCHAR/CHAR 转换成 DATE (目前支持"%Y-%m-%d", "%y-%m-%d", "%Y%m%d", "%y%m%d", "%Y/%m/%d, "%y/%m/%d"六种格式化格式)DATETIME 转换成 DATE(仅保留年-月-日信息, 例如: 2019-12-09 21:47:05 2019-12-09)DATE 转换成 DATETIME(时分秒自动补零, 例如: 2019-12-09 2019-12-09 00:00:00)FLOAT 转换成 DOUBLEINT 转换成 DATE (如果INT类型数据不合法则转换失败,原始数据不变)除DATE与DATETIME以外都可以转换成STRING,但是STRING不能转换任何其他类型对指定 index 的列进行重新排序

语法:

ORDER BY (column_name1, column_name2, ...)[FROM rollup_index_name][PROPERTIES ("key"="value", ...)]

注意:

index 中的所有列都要写出来value 列在 key 列之后Example​向 example_rollup_index 的 col1 后添加一个key列 new_col(非聚合模型)ALTER TABLE example_db.my_tableADD COLUMN new_col INT KEY DEFAULT "0" AFTER col1TO example_rollup_index;向example_rollup_index的col1后添加一个value列new_col(非聚合模型)ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER col1 TO example_rollup_index;向example_rollup_index的col1后添加一个key列new_col(聚合模型)ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER col1 TO example_rollup_index;向example_rollup_index的col1后添加一个value列new_col SUM聚合类型(聚合模型)ALTER TABLE example_db.my_table ADD COLUMN new_col INT SUM DEFAULT "0" AFTER col1 TO example_rollup_index;向 example_rollup_index 添加多列(聚合模型)ALTER TABLE example_db.my_tableADD COLUMN (col1 INT DEFAULT "1", col2 FLOAT SUM DEFAULT "2.3")TO example_rollup_index;从 example_rollup_index 删除一列ALTER TABLE example_db.my_tableDROP COLUMN col2FROM example_rollup_index;修改 base index 的 key 列 col1 的类型为 BIGINT,并移动到 col2 列后面。ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT KEY DEFAULT "1" AFTER col2;

注意:无论是修改 key 列还是 value 列都需要声明完整的 column 信息

修改 base index 的 val1 列最大长度。原 val1 为 (val1 VARCHAR(32) REPLACE DEFAULT "abc")ALTER TABLE example_db.my_table MODIFY COLUMN val1 VARCHAR(64) REPLACE DEFAULT "abc";重新排序 example_rollup_index 中的列(设原列顺序为:k1,k2,k3,v1,v2)ALTER TABLE example_db.my_tableORDER BY (k3,k1,k2,v2,v1)FROM example_rollup_index;同时执行两种操作ALTER TABLE example_db.my_tableADD COLUMN v2 INT MAX DEFAULT "0" AFTER k2 TO example_rollup_index,ORDER BY (k3,k1,k2,v2,v1) FROM example_rollup_index;修改Duplicate key 表 Key 列的某个字段的长度alter table example_tbl modify column k3 varchar(50) key null comment 'to 50'Keywords​ALTER, TABLE, COLUMN, ALTER TABLEBest Practice​


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3